home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Source / E / Screens / DoubleBuffer.e next >
Text File  |  1997-12-23  |  2KB  |  59 lines

  1. /* Name:      Double Buffering
  2. ** Author:    Paul Manias
  3. ** Copyright: DreamWorld Productions (c) 1996-1997.  Freely distributable.
  4. **
  5. ** This just shows how to double buffer the screen.  You can also try out
  6. ** triple buffering just by changing the DBLBUFFER flag to TPLBUFFER in the
  7. ** Screen.
  8. */
  9.  
  10. MODULE 'dpkernel','dpkernel/dpkernel','graphics/pictures','files/files'
  11. MODULE 'screens','system/register','system/modules','input/joydata'
  12. MODULE 'graphics/screens','graphics/blitter'
  13.  
  14. PROC main()
  15.  
  16.   DEF picture:PTR TO picture, screen:PTR TO screen, joydata:PTR TO joydata
  17.   DEF picfile:filename, scrmodule:PTR TO module
  18.  
  19.   picfile := [ ID_FILENAME, 'GMS:demos/data/PIC.Green' ]:filename
  20.  
  21.   IF dpkbase := OpenLibrary('GMS:libs/dpkernel.library',0)
  22.  
  23.     IF (scrmodule := Init([TAGS_MODULE,NIL,
  24.         MODA_NUMBER,    MOD_SCREENS,
  25.         MODA_TABLETYPE, JMP_AMIGAE,
  26.         TAGEND], NIL))
  27.  
  28.       scrbase := scrmodule.modbase
  29.  
  30.       IF (picture := Load(picfile, ID_PICTURE))
  31.          screen := Get(ID_SCREEN)
  32.          CopyStructure(picture,screen)
  33.          screen.memptr1 := picture.bitmap.data
  34.          screen.attrib  := DBLBUFFER OR CENTRE
  35.  
  36.          IF (screen := Init(screen,NIL))
  37.             IF (joydata := Init(Get(ID_JOYDATA),NIL))
  38.                Display(screen)
  39.                Query(joydata)
  40.  
  41.                REPEAT
  42.                  WaitAVBL()
  43.                  SwapBuffers(screen)
  44.                  Query(joydata)
  45.                UNTIL (joydata.buttons AND JD_LMB)
  46.  
  47.             Free(joydata)
  48.             ENDIF
  49.          Free(picture)
  50.          ENDIF
  51.       Free(screen)
  52.       ENDIF
  53.     Free(scrmodule)
  54.     ENDIF
  55.    CloseDPK()
  56.    ENDIF
  57. ENDPROC
  58.  
  59.